其他
Linux 被曝存在6年的严重 Realtek WiFi 0day,可使系统遭完全攻陷:或值2.5万美元
虽然美国国家漏洞库尚未发布 CVSS 评分,不过VulDB 网站对该漏洞的CVSS v3 评分为5.5分,并给出当前利用代码的价格范围是5000到2.5万美元(https://vuldb.com/?id.143835)。
漏洞详情
Found this bug on Monday. An overflow on the linux rtlwifi driver on P2P (Wifi-Direct), while parsing Notice of Absence frames.
The bug has been around for at least 4 years https://t.co/rigXOEId29 pic.twitter.com/vlVwHbUNmf— Nico Waisman (@nicowaisman) October 17, 2019
Nico Waisman 在推特上发布了自己的研究成果,并表示,“这个 bug 较为严重。如果目前使用的是 Realtek 驱动(rtlwifi),那么就易遭攻击,某人就能够在某个无线距离范围内实施攻击。”
当受影响设备位于恶意设备的无线范围内时,就可触发该漏洞。只要 WiFi 是打开的,那么就无需终端用户进行任何交互。恶意设备通过使用内置到 WiFi Direct 标准(允许两台设备在无需访问接入点的情况下通过 WiFi 连接)中的节电功能“Notice of Absence协议”利用该漏洞。该漏洞存在于驱动处理 Notice of Absence 数据包的方式中:它不检查兼容长度的某些数据包,因此攻击者能够增加特定的信息元素,导致系统遭崩溃。
他还指出,攻击者能够利用该漏洞触发多种攻击,“该漏洞触发溢出,也就是说可导致 Linux 崩溃,或者如果编写了正确的利用代码(不容易实现),那么攻击者就能够实现远程代码执行。”
受影响版本
https://android.googlesource.com/kernel/tegra/+/refs/tags/android-8.1.0_r0.135/drivers/net/wireless/rtlwifi/ps.c#750 https://t.co/SXhzEGeA5M
该漏洞可追溯至2013年发布的 Linux 内核版本 3.10.1。该漏洞已存在6年之久。
PoC 代码
补丁
https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg2132949.html
diff --git a/drivers/net/wireless/realtek/rtlwifi/ps.c
b/drivers/net/wireless/realtek/rtlwifi/ps.c
index 70f04c2f5b17..fff8dda14023 100644
--- a/drivers/net/wireless/realtek/rtlwifi/ps.c
+++ b/drivers/net/wireless/realtek/rtlwifi/ps.c
@@ -754,6 +754,9 @@ static void rtl_p2p_noa_ie(struct ieee80211_hw *hw, void
*data,
return;
} else {
noa_num = (noa_len - 2) / 13;
+ if (noa_num > P2P_MAX_NOA_NUM)
+ noa_num = P2P_MAX_NOA_NUM;
+
}
noa_index = ie[3];
if (rtlpriv->psc.p2p_ps_info.p2p_ps_mode ==
@@ -848,6 +851,9 @@ static void rtl_p2p_action_ie(struct ieee80211_hw *hw, void
*data,
return;
} else {
noa_num = (noa_len - 2) / 13;
+ if (noa_num > P2P_MAX_NOA_NUM)
+ noa_num = P2P_MAX_NOA_NUM;
+
}
noa_index = ie[3];
if (rtlpriv->psc.p2p_ps_info.p2p_ps_mode ==
--
2.21.0
Linux 内核团队可能会在未来几天或几周的时间内集成到 Linux 操作系统中。之后才能够将修复方案推到多种 Linux 发行版本中。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。